package com.ruoyi.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.SysImportResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysRegionMapper;
import com.ruoyi.system.domain.SysRegion;
import com.ruoyi.system.service.ISysRegionService;

/**
 * 行政区划管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-06-27
 */
@Service
public class SysRegionServiceImpl implements ISysRegionService 
{
    /**
     * 创建结果类对象
     */

    @Autowired
    private SysRegionMapper sysRegionMapper;

    @Autowired
    private SysImportResult sysImportResult;


    /**
     * 查询行政区划管理
     * 
     * @param id 行政区划管理主键
     * @return 行政区划管理
     */
    @Override
    public SysRegion selectSysRegionById(Integer id)
    {
        return sysRegionMapper.selectSysRegionById(id);
    }

    /**
     * 查询行政区划管理列表
     * 
     * @param sysRegion 行政区划管理
     * @return 行政区划管理
     */
    @Override
    public List<SysRegion> selectSysRegionList(SysRegion sysRegion)
    {
        return sysRegionMapper.selectSysRegionList(sysRegion);
    }

    /**
     * 新增行政区划管理
     * 
     * @param sysRegion 行政区划管理
     * @return 结果
     */
    @Override
    public int insertSysRegion(SysRegion sysRegion)
    {
        return sysRegionMapper.insertSysRegion(sysRegion);
    }

    /**
     * 批量新增行政区划管理
     * @param sysRegionList
     * @return
     */
    @Override
    public SysImportResult insertSysRegionMany(List<SysRegion> sysRegionList) {
        List<SysRegion> addMany = new ArrayList<>();
        List<SysRegion> addFail = new ArrayList<>();
        //设置变量记录成功失败条数
        int success = 0;
        int fail = 0;
        for(int i = 0;i<sysRegionList.size();i++){
            SysRegion sysRegion = sysRegionList.get(i);
            if(sysRegion.getRegionCode()!=null && sysRegion.getRegionName()!=null && sysRegion.getLevel()!=null && sysRegion.getFullName()!=null){
                addMany.add(sysRegion);
                success++;
            }else {
                addFail.add(sysRegion);
                fail++;
            }

        }
        if (addMany.size()>0 && addMany.size() == sysRegionList.size()){
            sysRegionMapper.insertSysRegionMany(addMany);
            return sysImportResult.successAll(success,fail);
        } else if (addMany.size()>0 && addMany.size()!=sysRegionList.size()) {
            sysRegionMapper.insertSysRegionMany(addMany);
            sysRegionMapper.insertSysRegionFail(addFail);
            return sysImportResult.success(success,fail,addFail);
        }
        sysRegionMapper.insertSysRegionFail(addFail);
        return sysImportResult.failAll(success,fail,addFail);
    }



    /**
     * 新增失败行政区划管理数据
     * @param sysRegionList
     * @return
     */
    @Override
    public List<SysRegion> getSysRegionAddFail(SysRegion sysRegion) {
        return sysRegionMapper.selectSysRegionFail(sysRegion);
    }

    /**
     * 清空新增失败表数据
     * @return
     */
    @Override
    public int deleteSysRegionFail() {
        return sysRegionMapper.deleteSysRegionFail();
    }

    /**
     * 修改行政区划管理
     * 
     * @param sysRegion 行政区划管理
     * @return 结果
     */
    @Override
    public int updateSysRegion(SysRegion sysRegion)
    {
        return sysRegionMapper.updateSysRegion(sysRegion);
    }

    /**
     * 批量删除行政区划管理
     * 
     * @param ids 需要删除的行政区划管理主键
     * @return 结果
     */
    @Override
    public int deleteSysRegionByIds(Integer[] ids)
    {
        return sysRegionMapper.deleteSysRegionByIds(ids);
    }

    /**
     * 删除行政区划管理信息
     * 
     * @param id 行政区划管理主键
     * @return 结果
     */
    @Override
    public int deleteSysRegionById(Integer id)
    {
        return sysRegionMapper.deleteSysRegionById(id);
    }
}
